package com.isoftstone.tpl;

import java.util.Locale;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.ui.Model;

public class BaseAction {
	@Autowired
	protected MessageSource messageSource;
	
	/**
	 * WEB-INF/tiles-defs.xml配置文件中定义的Tiles模板名<br>
	 * 默认模板名为"default"。使用默认模板时则不需指定模板名。
	 * @author 许亮
	 * @since 2013-4-5 14:08:05
	 */
	public enum TilesTPL {
		//default,
		help
	}
	
	/**
	 * 获取国际化文本
	 * @param i18nKey
	 * @param locale
	 * @return
	 */
	protected String getI18NMessage(String i18nKey, Locale locale){
		String string = getI18NMessage(i18nKey, null, locale);
		return string;
	}
	
	/**
	 * 获取国际化文本，支持参数传入
	 * @param i18nKey
	 * @param wildcards 例如："{0}", "{1,date}", "{2,time}"
	 * @param locale
	 * @return
	 */
	protected String getI18NMessage(String i18nKey, Object[] wildcards, Locale locale){
		String string = messageSource.getMessage(i18nKey, wildcards, "i18n: " + i18nKey, locale);
		return string;
	}
	
	/**
	 * 填充设置页面的标题
	 * @param model org.springframework.ui.Model
	 * @param pageTitle 页面标题文字
	 */
	protected void setPageTitle(Model model, String pageTitle){
		model.addAttribute("pageTitle", pageTitle);
	}
	
	/**
	 * 返回全局通用默认Tiles模板配置
	 * @param viewName
	 * @return
	 */
	protected String setTilesView(String viewName) {
		return setTilesView(viewName, "default");
	}
	
	/**
	 * 返回用户定制Tiles模板配置
	 * @param viewName
	 * @param tilesTemplate 
	 * @return
	 */
	protected String setTilesView(String viewName, String tilesTemplate) {
		viewName = viewName.replaceAll("/", "\\\\");
		return tilesTemplate + "::" + viewName;
	}
}
